1. Field of the Invention
The present invention relates to communication between computing resources, such as processors. More specifically, the present invention relates to a point-to-point communication scheme between computing resources which is phase tolerant.
2. Background Information
Communication between computing resources, such as processors, is an integral part of multi-processing and is often a limiting factor in performance. As more processors are applied to solving larger problems, the demand for higher bandwidth communication increases. Prior art processor communication includes the shared bus approach wherein a plurality of processors or other computing resources are coupled together via a single bus. At bus frequencies greater than 50 MHz, this well known prior art technology is limited by poor transmission characteristics and poor spatial flexibility. Difficult clock phase tuning and many signal pins for control information on the bus, as well as a bus protocol for requesting and granting access to the bus is required in a shared bus scheme. In addition, the variable distances caused by connecting large numbers of processors in a massively parallel system results in large phase differences between signals between communicating resources.
One prior attempt to solve this problem has been the use of point-to-point self-timed interfaces. Some of these interfaces operated in the interlocked mode, returning an acknowledgment for each data transfer. However, attempts to increase communication performance led to the "streaming mode" wherein data is stored on the wire up to the full capacity of the medium. In certain prior art attempts, up to four data transfers were made before acknowledgments from the receiver were required. In essence, this amounts to a locally synchronous environment. Extension of this synchronous type of scheme is difficult to implement because each pin interface has its own unique self-timing aspects. Several problems are incurred by the use of a self-timed approach from the core logic and the communication between computing resources, for example, in a massively parallel environment.